package com.surge;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringDataTest {

	private ApplicationContext ctx = null;
	private PersonRepsotory personRepsotory = null;
	private PersonService personService;

	{
		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		personRepsotory = ctx.getBean(PersonRepsotory.class);
		personService = ctx.getBean(PersonService.class);
	}

	/*
	 * ================================== Query  ======================================
	 */

	/**
	 * 嵌套查询
	 */
	@Test
	public void testQueryAnnotation() {
		Person person = personRepsotory.getMaxIdPerson();
		System.out.println(person);
	}

	/**
	 * 传参数查询
	 */
	@Test
	public void testQueryAnnotationParams1() {
		List<Person> persons = personRepsotory.testQueryAnnotationParams1("AA", "aa@aa.com");
		System.out.println(persons);
	}

	@Test
	public void testQueryAnnotationParams2() {
		List<Person> persons = personRepsotory.testQueryAnnotationParams2("aa@aa.com", "AA");
		System.out.println(persons);
	}

	@Test
	public void testQueryAnnotationLikeParam() {
		// List<Person> persons =
		// personRepsotory.testQueryAnnotationLikeParam("%A%", "%bb%");
		// System.out.println(persons.size());

		// List<Person> persons =
		// personRepsotory.testQueryAnnotationLikeParam("A", "bb");
		// System.out.println(persons.size());

		List<Person> persons = personRepsotory.testQueryAnnotationLikeParam2("bb", "A");
		System.out.println(persons.size());
	}

	@Test
	public void testNativeQuery() {
		long count = personRepsotory.getTotalCount();
		System.out.println(count);
	}

	@Test
	public void testModifying() {
		// personRepsotory.updatePersonEmail(1, "mmmm@MMM.com"); // 不能直接调用，需要事务
		personService.updatePersonEmail("mmmm@MMM.com",1);
	}

}
